home *** CD-ROM | disk | FTP | other *** search
/ Mobiclic 47 / MOBICLIC 47.ISO / mac / DATA / COMMUNS / MOBICLIC_MENUS.CST / 00221_Script_SCRIPTS_GENE_JLM < prev    next >
Text File  |  2002-09-19  |  36KB  |  846 lines

  1. --scripts gΘnΘraux pour Mobiclic by ⌐Time line/jl moreau 2001
  2. -------------------------------------------------
  3. on turndizstuff_Mob WADSPRITE, WADWAY
  4.   case(WADWAY) of
  5.     "ON":
  6.       if sprite(WADSPRITE).left >= 640 then sprite(WADSPRITE).locH = sprite(WADSPRITE).locH - 800
  7.     "OFF":
  8.       if sprite(WADSPRITE).left < 640 then sprite(WADSPRITE).locH = sprite(WADSPRITE).locH + 800
  9.   end case
  10. end
  11. ------------------------------------------------- 
  12. on turndizstuff  WADSPRITE, WADWAY
  13.   case(WADWAY) of
  14.     "ON":
  15.       if sprite(WADSPRITE).left >= 800 then sprite(WADSPRITE).locH = sprite(WADSPRITE).locH - 800
  16.     "OFF":
  17.       if sprite(WADSPRITE).left < 800 then sprite(WADSPRITE).locH = sprite(WADSPRITE).locH + 800
  18.   end case
  19. end
  20. ------------------------------------------------- 
  21. on gimme2digits ZENOMBRE
  22.   case(ZENOMBRE) <10 of
  23.     1:
  24.       reponse = "0"&string(ZENOMBRE)
  25.     0:
  26.       reponse = string(ZENOMBRE)
  27.   end case
  28.   return reponse
  29. end
  30. -------------------------------------------------
  31. on gimmezeAlphabet_No WATCHAR
  32.   u = chartoNum(WATCHAR)
  33.   case(u>64 and u < 91) of
  34.     1:-- si c'est une capitale
  35.       reponse = u - 64
  36.     0:
  37.       case(u>96 and u < 123) of
  38.         1: -- si c'est un voyelle
  39.           reponse = u - 96
  40.         0:
  41.           reponse = 0
  42.       end case
  43.   end case
  44.   return reponse
  45. end
  46. -----------------------------------
  47. on gimmezelowcaseletter WATNoAlpha
  48.   case(WATNoAlpha>96 and WATNoAlpha < 123) of
  49.     1:
  50.       reponse = numtoChar(WATNoAlpha)
  51.     0:
  52.       reponse = "erreur sur lettre"
  53.   end case
  54.   return reponse
  55. end
  56. -----------------------
  57. on MAJ_DB_FRISE
  58.   global gdizDB,gcheminDB
  59.   gdizDB = New(Xtra "V12dbe",gcheminDB&"FRISE_DB.V12", "ReadOnly", "") 
  60.   --1--) crΘation de l'instance d'une table V12 pour la table "INVENTIONS" 
  61.   gdizTable = New(Xtra "V12table",mGetRef(gdizDB),"INVENTIONS")
  62.   mSelect(gdizTable)
  63.   --2--) remplissage de la liste tampon par pΘriode et ventilation dans des acteurs champs
  64.   Lresult = [[],[],[],[],[],[],[]]
  65.   repeat with i = 1 to 7
  66.     mSetCriteria(gdizTable, "REF_PERIODE", "=", i)
  67.     mOrderBy(gdizTable,"NO_INVENT")
  68.     mSelect(gdizTable)
  69.     Nb_enreg = mSelectCount(gdizTable)
  70.     Lresult[i] = mGetSelection(gdizTable,"list",1,Nb_enreg,"NO_INVENT","DATE_AFFICHEE", "DATE_REPERE", "TITRE_PICTO")
  71.     Nb = count( Lresult[i])
  72.     repeat with j = 1 to Nb
  73.       u = Lresult[i][j][2]
  74.       L = length(u)
  75.       Lresult[i][j][2] = u.char[2..L-1]
  76.     end repeat
  77.     member("localdata_FRISE_"&gimme2digits(i)).text = string(Lresult[i])
  78.   end repeat
  79.   gdizTable = 0
  80.   gdizDB = 0
  81. end
  82. ------------------------------------------
  83. on JINGLE WATTRACK,WATSOUND, WATMODE
  84.   global nivSon
  85.   --joue un son du dossier JINGLES, soit en "direct from disk" (WATMODE = OUT),
  86.   --soit α partir de la distribution JINGLE (WATMODE = IN)
  87.   put "son jingle jouΘ:"& WATSOUND
  88.   case(WATMODE) of
  89.     "IN":
  90.       puppetSound WATTRACK, WATSOUND
  91.     "OUT":
  92.       sound playFile WATTRACK, "@//COMMUNS/MOBICLIC_JINGLES/"&WATSOUND&".aif"
  93.   end case
  94.   repeat with i=1 to 3
  95.     if i<>WATTRACK and nivSon[WATTRACK]>102 then
  96.       sound(i).volume = 110
  97.     end if
  98.   end repeat
  99. end
  100. -----------------------------------------
  101. on gimmeQDraw_Center ZESPRITENo
  102.   --retourne le centre d'une forme QUICKDRAW situΘ sur la piste n░ ZESPRITENo
  103.   return point( (sprite(ZESPRITENo).right+sprite(ZESPRITENo).left )/2, (sprite(ZESPRITENo).Top + sprite(ZESPRITENo).Bottom)/2)
  104. end
  105. ----------------------------------------
  106. on locate_QDraw_bycenter ZESPRITENo, WATPLACE
  107.   -- positionne le centre d'un QuickDraw 
  108.   zedelta = point(sprite(ZESPRITENo).width/2, sprite(ZESPRITENo).height/2)
  109.   sprite(ZESPRITENo).loc = WATPLACE - zedelta
  110. end
  111. -----------------------------
  112. on lien 
  113.   if the platform contains "Win" then
  114.     reponse = "/"
  115.   else
  116.     reponse = ":"
  117.   end if 
  118.   return reponse
  119. end
  120. -------------------------------
  121. on zizik WATMUS
  122.   num = char 6 to 7 of the movieName
  123.   sound(1).volume = 50
  124.   sound(1).play(member(WATMUS))
  125. end
  126. ------------------------
  127. on REL2ABS STRINGNoCYBER -- donne le n░ du cyber dans la classification tenant compte des cybers rΘcurents
  128.   global gL_transcoCyber
  129.   -- pour Θviter toute erreur on impose un chaine de la forme "XX" si par erreur l'argument passΘ est un nombre
  130.   --  ex: 5 au lieu de "05"
  131.   STRINGNoCYBER = gimme2digits(value(STRINGNoCYBER))
  132.   return gimme2digits(gL_transcoCyber.getProp("C"&STRINGNoCYBER))
  133. end
  134. --------------------
  135. on ABS2REL STRINGNoCYBER-- donne le n░ du cyber dans l'ordre imposΘ chaquemois
  136.   global gL_transcoCyber
  137.   temp = 0
  138.   repeat with i = 1 to count(gL_transcoCyber)
  139.     if gL_transcoCyber[i] = STRINGNoCYBER then
  140.       temp = i
  141.       exit repeat
  142.     end if
  143.   end repeat
  144.   return gimme2digits(gL_transcoCyber.getPropAt(temp)).char[2..3]
  145. end
  146. --------------------
  147. on getInfo_titre_module
  148.   global gL_Type_module, gNo_cyber, gL_recres, gNo_Mobi,gL_transcoCyber, gNoABS_cyber
  149.   niveauSon
  150.   gL_transcoCyber = value(member("RUBRIQUES").line[10])
  151.   if  gNo_Mobi = VOID then gNo_Mobi = value(member("RUBRIQUES").line[8])
  152.   zenom = the movieName
  153.   case(zenom contains "calen") of
  154.     1: --on a affaire α un cybercalendrier
  155.       if gL_recres = VOID then
  156.         --        temp = value(member("RUBRIQUES").line[6])
  157.         --        gL_recres = []
  158.         --        repeat with i = 1 to count(temp)
  159.         --          gL_recres.add(value(REL2ABS(gimme2digits(temp[i]))))
  160.         --        end repeat
  161.         gL_recres = value(member("RUBRIQUES").line[6])
  162.       end if
  163.       gL_Type_module = ["CYBER", "NOP"]
  164.       case(zenom = "CALEND") of
  165.         1:--c'est le menu des cyber
  166.           gNoABS_cyber = "00"
  167.           gNo_cyber  = "00"
  168.         0:--c'estun cyber 
  169.           gNoABS_cyber =  zenom.char[6..7] -- on renseigne le n░ABSOLU de cyber(sous forme d'une chaine de 2 caractΦres ex "07"
  170.           gNo_cyber = ABS2REL(zenom.char[6..7])-- on renseigne le n░relatif de cyber(sous forme d'une chaine de 2 caractΦres ex "07"
  171.           member("No_MODULE").text = gNo_cyber 
  172.           member("TITRE_MODULE").text = member("selectMenus").line[6]-- on renseigne le titre du cyber de cyber
  173.       end case
  174.     0: -- on a affaire α une rubrique
  175.       tampon = value(member("selectMenus").line[6])
  176.       member("TITRE_MODULE").text = tampon[2]-- on renseigne le titre du movie
  177.       member("No_MODULE").text = EMPTY -- le texte contenant le n░ est vidΘ
  178.       gL_Type_module = ["RUB",tampon[1]]
  179.       --tampon[1] contient "HIS" pour histoire, "SCI" pour ClicSciences, "GEO" pour gΘographie, "QUI" pour le Quiz...
  180.   end case
  181. end
  182. ----------------
  183. on compte_objets_GLI_DEPO RACINENOMOBJET, WATMODE
  184.   global gNb_Objets,gL_Objects_Home, gMode_GLI_DEPO
  185.   -- dans un jeu glisser-dΘposer" cette procΘdure:
  186.   -- compte le nombre d'objets α dΘplacer
  187.   -- RAZ la liste des positions de retour Θlastique des objets
  188.   -- initialise la variable de mode de jeu glisser-dΘposer :
  189.   -- 0 pour rΘbus, 1 pour retour si non bien placΘ;  2 pour Θchange possible des objets placΘs, 3 pour utilisation d'un "distributeur"
  190.   
  191.   --on compte le nombre d'objets dΘplaτables
  192.   Nb_acteurs = the number of members of castLib 1
  193.   compteur = 0
  194.   repeat with i = 1 to Nb_acteurs
  195.     ZENOM = member(i).name
  196.     if ZENOM contains RACINENOMOBJET and not(ZENOM contains "_R") and not(ZENOM contains "_S") and not(ZENOM contains "_I") then
  197.       L = length(ZENOM)
  198.       ZENo = value(ZENOM.char[L-1..L])
  199.       compteur = max(compteur, ZENo)
  200.     end if
  201.   end repeat
  202.   gNb_Objets = compteur
  203.   gL_Objects_Home = []
  204.   gMode_GLI_DEPO = WATMODE
  205. end
  206. ---------------------
  207. on compte_Mots()
  208.   Nb_acteurs = the number of members of castLib 1
  209.   compteur = 0
  210.   repeat with i = 1 to Nb_acteurs
  211.     ZENOM = member(i).name
  212.     if ZENOM contains "MOT" and not(ZENOM contains "_R") and not(ZENOM contains "_S") and not(ZENOM contains "_I") then
  213.       L = length(ZENOM)
  214.       ZENo = value(ZENOM.char[L-1..L])
  215.       compteur = max(compteur, ZENo)
  216.     end if
  217.   end repeat
  218.   return compteur
  219. end
  220. -------------
  221. on clic_zap ZETARGET, ZESOUNDTRACK
  222.   puppetSound ZESOUNDTRACK, 0
  223.   go ZETARGET
  224. end
  225. -------------------
  226. on siestoune NBSECONDES
  227.   top_depart = the timer
  228.   top_arrivee = top_depart + 60*NBSECONDES
  229.   repeat while the timer < top_arrivee
  230.   end repeat
  231. end
  232. ---------------
  233. on getInfo_bandeauTitre
  234.   global gpiste_BandeauTitre, gEtatBandeau, gTitreFinalPos, gL_BandeauTitre_HomeH, gL_Type_module, gNb_cybers
  235.   if gNb_cybers = VOID then gNb_cybers = value(member("RUBRIQUES").line[4])
  236.   if gL_BandeauTitre_HomeH = VOID then gL_BandeauTitre_HomeH = [point(0,0),point(0,0), point(0,0)] 
  237.   gL_BandeauTitre_HomeH[1] = sprite(gpiste_BandeauTitre).locH
  238.   gL_BandeauTitre_HomeH[2] = sprite(gpiste_BandeauTitre+1).locH
  239.   gL_BandeauTitre_HomeH[3] = sprite(gpiste_BandeauTitre+2).locH
  240.   gEtatBandeau = "KO"
  241.   largeurbandeau = sprite(gpiste_BandeauTitre).member.width
  242.   largeurActeurTitre = sprite(gpiste_BandeauTitre+ 1).width
  243.   gaucheduTitreCyber = member("TITRE_MODULE").charPosToLoc(1)
  244.   droiteBandeau = sprite(gpiste_BandeauTitre).right
  245.   droiteActeurTitre = sprite(gpiste_BandeauTitre+ 1).right
  246.   gTitreFinalPos = droiteBandeau - droiteActeurTitre + largeurActeurTitre - gaucheduTitreCyber - largeurbandeau/2 + 10
  247.   if gL_Type_module[1] = "RUB" then
  248.     sprite(gpiste_BandeauTitre).member = "BD_TITRE_"&gL_Type_module[2] -- on remplace le bandeau standars par le bandeau de rubrique adΘquat
  249.   end if 
  250. end
  251. ------------------------
  252. on show_title
  253.   global gpiste_BandeauTitre, gEtatBandeau, gTitreFinalPos, gL_BandeauTitre_HomeH
  254.   gEtatBandeau = "OK"
  255.   delta = gTitreFinalPos[1] - gL_BandeauTitre_HomeH[1]
  256.   sprite(gpiste_BandeauTitre).locH = gTitreFinalPos[1]
  257.   sprite(gpiste_BandeauTitre + 1).locH = gL_BandeauTitre_HomeH[2] + float(delta)/2
  258.   sprite(gpiste_BandeauTitre + 2).locH = gL_BandeauTitre_HomeH[3] + float(delta)/2
  259.   updateStage
  260.   sprite(gpiste_BandeauTitre).locH = gTitreFinalPos[1]
  261.   sprite(gpiste_BandeauTitre + 1).locH = gL_BandeauTitre_HomeH[2] + delta
  262.   sprite(gpiste_BandeauTitre + 2).locH = gL_BandeauTitre_HomeH[3] + delta
  263.   updateStage
  264. end
  265. --------------------------
  266. on hide_title
  267.   global gpiste_BandeauTitre, gEtatBandeau,  gL_BandeauTitre_HomeH, gTitreFinalPos
  268.   sprite(gpiste_BandeauTitre).blend = 60
  269.   case(gEtatBandeau = "OK") of
  270.     1:
  271.       gEtatBandeau = "KO"
  272.       delta = gTitreFinalPos[1] - gL_BandeauTitre_HomeH[1]
  273.       sprite(gpiste_BandeauTitre).locH = gTitreFinalPos[1]
  274.       sprite(gpiste_BandeauTitre + 1).locH = gL_BandeauTitre_HomeH[2] + float(delta)/2
  275.       sprite(gpiste_BandeauTitre + 2).locH = gL_BandeauTitre_HomeH[3] + float(delta)/2
  276.       updateStage
  277.       sprite(gpiste_BandeauTitre).locH = gL_BandeauTitre_HomeH[1]
  278.       sprite(gpiste_BandeauTitre + 1).locH = gL_BandeauTitre_HomeH[2]
  279.       sprite(gpiste_BandeauTitre + 2).locH = gL_BandeauTitre_HomeH[3]
  280.       updateStage
  281.     0:
  282.       nothing
  283.   end case
  284.   -------------------------
  285. on faire_bonne_impression  WATMODE, WATTYPE,WATSTUFF,TITRE, PIED_DE_PAGE
  286.   -- WATMODE indique si on est en mode aperτu (1) ou en mode impression (0)
  287.   -- WATMEDIA indique le type de fichier α imprimer : acteur (nom d'acteur) ou Θcran ("E")
  288.   -- crΘation d'une instance de l'xtra d'impression----------------------------------------------------------
  289.   doc = new(xtra "PrintOMatic")
  290.   if not objectP(doc) then exit
  291.   -- rΘglages des marges
  292.   setPrintableMargins (doc)
  293.   setMargins doc, rect(42,42,42,42)
  294.   -- crΘation de la page
  295.   if (doPageSetup(doc)) then
  296.     newPage doc
  297.     -- initialisation des variables de format page
  298.     L_Page=getPageWidth(doc)
  299.     H_Page=getPageHeight(doc)
  300.     --initialisation de la police
  301.     setTextFont doc,"Dream of me *"
  302.     
  303.     case(WATTYPE) of
  304.       "E": --impression d'Θcran
  305.         
  306.       "M":--impression d'acteur
  307.         ---------------- TETE DE LA PAGE -------------------
  308.         --        -- ligne horizontale haut de page
  309.         --        drawLine doc,point(0,10),point(L_Page,10)
  310.         --        -- titre
  311.         --        setTextJust doc,"centered"
  312.         --        setTextStyle doc,"bold"
  313.         --        setTextSize doc,14
  314.         --        drawText doc,TITRE ,point(L_Page/2, 25)
  315.         ---------------- CORPS DE LA PAGE -------------------
  316.         -- placement du schΘma (taille propre, ramenΘe autoritairement α largeur max = L_Page
  317.         -- ou α la hauteur de page disponible(H_Page) si l'une des deux dimensions est trop grande
  318.         --        if ECONOMIE = 1 then
  319.         --        WATSTUFF = WATSTUFF&"_LIGHT"
  320.         --        end if
  321.         L = float(member(WATSTUFF).width)
  322.         H = float(member(WATSTUFF).height)
  323.         coef  = H/L
  324.         case(L>=H) of
  325.           1:
  326.             L_schema = min(L, L_Page)
  327.             H_schema = (L_schema)*coef
  328.           0:
  329.             H_schema = min(H,H_Page-50)
  330.             L_schema = H_schema/coef
  331.         end case
  332.         drawPicture doc,member(WATSTUFF),rect(0,0,L_schema,H_schema)
  333.         ----------------- PIED DE PAGE -------------------
  334.         -- ligne horizontale bas de page
  335.         --        drawLine doc,point(0,H_Page-30),point(L_Page,H_Page-30)
  336.         setTextJust doc,"left"
  337.         setTextStyle doc,"plain"
  338.         setTextSize doc,16
  339.         drawText doc,PIED_DE_PAGE,point(L_Page- 255,H_Page-15)
  340.         -- logo  GF
  341.         drawPicture doc,member("LOGO_MILAN"),rect(L_Page- 41,H_Page-41,L_Page-1,H_Page-1)
  342.         setTextSize doc,8
  343.     end case
  344.     -- lancement de l'impression-----------------------------------------------------------
  345.     case(WATMODE) of
  346.       1:-- si on est en mode aperτu on affiche l'aperτu
  347.         printPreview doc
  348.       0:-- sinon on imprime
  349.         setProgressMsg doc, "Impression de la fiche "&TITRE&" en cours... "
  350.         if doJobSetup(doc) then print doc
  351.     end case
  352.   end if
  353. end
  354. ------------------------------------------------------------------------------
  355. on Eker_BG_JLM
  356.   global gpiste_Infos, gpisteDico, gpisteFond_Dico, gpisteFond_Infos, gpisteFond_infos, pisteAideRub, gNoABS_cyber
  357.   global gNo_cyber
  358.   L_taches = value(member("selectMenus").line[3]) -- on charge la liste des taches locales de l'Θquerre bleue
  359.   zestuff = the movieName
  360.   case(zestuff contains "CALEN") of
  361.     1: --c'est un cyber calend
  362.       if L_taches[2] = 1 then
  363.         zegoud_aide = "aide"&gNo_cyber
  364.         sprite(pisteAideRub + 1).member = zegoud_aide -- s'l y a appel au l'aide rubrique on charge le bon texte d'aide
  365.         sprite(pisteAideRub).member = "FOND_AIDE"
  366.         updateStage
  367.         zegoud_aide_H = sprite(pisteAideRub + 1).height
  368.         sprite(pisteAideRub + 1).locV = 480 - zegoud_aide_H -10
  369.         sprite(pisteAideRub).locV = 480 - zegoud_aide_H -70 + member("FOND_AIDE").height/2
  370.       end if
  371.       if L_taches[3] = 1 then
  372.         zegoud_dico = "dico"&gNo_cyber
  373.         sprite(gpisteDico).member = zegoud_dico -- s'l y a appel au dico on charge le bon texte dico
  374.         updateStage
  375.         zegoud_dico_H = sprite(gpisteDico).height
  376.         sprite(gpisteDico).locV = 480 - zegoud_dico_H -10
  377.         sprite(gpisteFond_Dico).locV = 480 - zegoud_dico_H -70 + member("FOND_DICO").height/2
  378.       end if
  379.       if L_taches[4] = 1 then
  380.         zegoud_infos = "infos"&gNo_cyber
  381.         sprite(gpiste_Infos).member = zegoud_infos -- s'l y a appel aux infos on charge le bon texte info
  382.         updateStage
  383.         zegoud_infos_H = sprite(gpiste_Infos).height
  384.         sprite(gpiste_Infos).locV = 480 - zegoud_infos_H -10
  385.         sprite(gpisteFond_Infos).locV = 480 - zegoud_infos_H -90 +member("FOND_INFOS").height/2
  386.       end if
  387.     0:
  388.       case(zestuff contains "LAN") of
  389.         1: -- c'est une rubrique langue
  390.           nothing
  391.         0: --c'est une rubrique ou.....
  392.           L = length(zestuff)
  393.           zeshortName = zestuff.char[1..L-4] --ex "FRISE" pour le movie "FRISE.dir"
  394.           if L_taches[2] = 1 then
  395.             zegoud_aide = "aide"&zeshortName
  396.             sprite(pisteAideRub + 1).member = zegoud_aide -- s'l y a appel au l'aide rubrique on charge le bon texte d'aide
  397.             sprite(pisteAideRub).member = "FOND_AIDE"
  398.             updateStage
  399.             zegoud_aide_H = sprite(pisteAideRub + 1).height
  400.             sprite(pisteAideRub + 1).locV = 480 - zegoud_aide_H -10
  401.             sprite(pisteAideRub).locV = 480 - zegoud_aide_H -70 + member("FOND_AIDE").height/2
  402.           end if
  403.           if L_taches[3] = 1 then
  404.             zegoud_dico = "dico"&zeshortName
  405.             sprite(gpisteDico).member = zegoud_dico -- s'l y a appel au dico on charge le bon texte dico
  406.             updateStage
  407.             zegoud_dico_H = sprite(gpisteDico).height
  408.             sprite(gpisteDico).locV = 480 - zegoud_dico_H -10
  409.             sprite(gpisteFond_Dico).locV = 480 - zegoud_dico_H -70 + member("FOND_DICO").height/2
  410.           end if
  411.           if L_taches[4] = 1 then
  412.             zegoud_infos = "infos"&zeshortName
  413.             sprite(gpiste_Infos).member = zegoud_infos -- s'l y a appel aux infos on charge le bon texte info
  414.             updateStage
  415.             zegoud_infos_H = sprite(gpiste_Infos).height
  416.             sprite(gpiste_Infos).locV = 480 - zegoud_infos_H -10
  417.             sprite(gpisteFond_Infos).locV = 480 - zegoud_infos_H -90 +member("FOND_INFOS").height/2
  418.           end if
  419.       end case
  420.   end case
  421. end
  422. -----------------
  423. on compte_Famille RACINE_NOM
  424.   Nb_acteurs = the number of members of castLib 1
  425.   reponse = 0
  426.   repeat with i = 1 to Nb_acteurs
  427.     if member(i).name contains RACINE_NOM then
  428.       reponse = reponse + 1
  429.     end if
  430.   end repeat
  431.   return reponse
  432. end
  433. --------------------
  434. on RAZ_pistes_son
  435.   coupeson(2)
  436.   coupeson(3)
  437. end
  438. -------------------
  439. on gimmezeDroite ZE2POINTS
  440.   x1 = ZE2POINTS[1][1]
  441.   y1 = ZE2POINTS[1][2]
  442.   x2 = ZE2POINTS[2][1]
  443.   y2 = ZE2POINTS[2][2]
  444.   if abs(x1-x2) < 2 then 
  445.     x2 = x1
  446.   else
  447.     if abs(y1-y2) < 2 then
  448.       y2 = y1
  449.     end if
  450.   end if
  451.   case(x1<>x2 and y1 <> y2) of
  452.     1:
  453.       -- cas gΘnΘral
  454.       a = float(y2 - y1)/(x2 - x1)
  455.       b = y1 - a*x1
  456.       reponse = [a,b]
  457.     0:
  458.       case(x1 = x2) of
  459.         1: --droite verticale
  460.           
  461.           reponse = ["V", x1]
  462.         0: -- droite horizontale
  463.           reponse = ["H", y1]
  464.       end case
  465.   end case
  466.   return reponse
  467. end
  468. ---------------------
  469. on extractNo ZETEXT
  470.   L = length(ZETEXT)
  471.   reponse = value(ZETEXT.char[L-1..L])
  472.   return reponse
  473. end
  474. --------------------
  475. on debut_cyber
  476.   go movie "@/calend"
  477. end
  478. -------------
  479. on revoir_cyber
  480.   initFilm
  481.   go to movie(the movieName)
  482. end
  483. ---------------
  484. on suite_cyber
  485.   global gNo_cyber, gNb_cybers, gL_recres
  486.   zeNo = value(gNo_cyber)
  487.   case(member("selectMenus").line[6] contains "Cyberlecteur" or member("selectMenus").line[6] contains "Questionlecteur") of
  488.     1:--si on est dans un cyberlecteur (dΘcouplΘ en deux fichiers calenXX.dir et calenXX_1.dir)
  489.       case(the movieName contains "_1") of
  490.         0:-- si on est dans le premier des deux fichiers
  491.           go movie "@/calen"&REL2ABS(zeNo)&"_1"-- on va au second (exactement α son adresse absolue)
  492.         1:-- si on est dans le second
  493.           if zeNo < gNb_cybers then -- si ce n'est pas le dernier cyber du mois
  494.             case(gL_recres.getPos(zeNo + 1)) of
  495.               0:------------------ si le cyber suivant n'est pas une rΘcrΘ
  496.                 go movie "@/calen"&REL2ABS(zeNo + 1)-- on va au cyber suivant (exactement α son adresse absolue)
  497.               otherwise:---------- si le  cyber suivant est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  498.                 
  499.                 if zeNo + 2 >  gNb_cybers then-----si le  rang de ce cyber + 2 dΘpasse le nombre de cybers du mois
  500.                   go movie "@/calen"&REL2ABS("O1") -- on va au cyber n░1 (exactement α son adresse absolue)
  501.                 else
  502.                   go movie "@/calen"&REL2ABS(zeNo + 2)-- sinon, on va au cyber de rang courant  + 2 (exactement α son adresse absolue)
  503.                 end if
  504.             end case
  505.           else --si c'est le dernier cyber du mois
  506.             case(gL_recres.getPos(1)) of
  507.               0:-- si le premier cyber du mois n'est pas une rΘcrΘ
  508.                 go movie "@/calen"&REL2ABS(1)-- on va au premier cyber(exactement α son adresse absolue)
  509.               otherwise:-- si le premier cyber du mois est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  510.                 go movie "@/calen"&REL2ABS(2)-- on va au 2Φme cyber(exactement α son adresse absolue)
  511.             end case 
  512.           end if
  513.       end case
  514.     0:--si on n'est pas dans un cyberlecteur
  515.       if zeNo < gNb_cybers then -- si ce n'est pas le dernier cyber du mois
  516.         case(gL_recres.getPos(zeNo + 1)) of
  517.           0:------------------ si le cyber suivant n'est pas une rΘcrΘ
  518.             go movie "@/calen"&REL2ABS(zeNo + 1)-- on va au cyber suivant (exactement α son adresse absolue)
  519.           otherwise:---------- si le  cyber suivant est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  520.             if zeNo + 2 >  gNb_cybers then-----si le  rang courant ce cyber + 2 dΘpasse le nombre de cybers du mois
  521.               go movie "@/calen"&REL2ABS(1) -- on va au cyber n░1 (exactement α son adresse absolue)
  522.             else
  523.               go movie "@/calen"&REL2ABS(zeNo + 2)-- sinon, on va au cyber de rang courant  + 2 (exactement α son adresse absolue)
  524.             end if
  525.         end case
  526.       else --si c'est le dernier cyber du mois
  527.         case(gL_recres.getPos(1)) of
  528.           0:-- si le premier cyber du mois n'est pas une rΘcrΘ
  529.             go movie "@/calen"&REL2ABS(1)-- on va au premier cyber(exactement α son adresse absolue)
  530.           otherwise:-- si le premier cyber du mois est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  531.             go movie "@/calen"&REL2ABS(2)-- on va au 2Φme cyber(exactement α son adresse absolue)
  532.         end case
  533.       end if
  534.   end case
  535. end
  536. --------------
  537. on retour_cyber
  538.   global gNo_cyber, gNb_cybers, gL_recres
  539.   zeNo = value(gNo_cyber)
  540.   case(member("selectMenus").line[6] contains "Cyberlecteur" or member("selectMenus").line[6] contains "Questionlecteur") of
  541.     1:--si on est dans un cyberlecteur (dΘcouplΘ en deux fichiers calenXX.dir et calenXX_1.dir)
  542.       case(the movieName contains "_1") of
  543.         1:-- si on est dans le 2Φme des deux fichiers
  544.           go frame "ATTENTE" of movie "@/calen"&REL2ABS(zeNo)-- on va au Premier (exactement α son adresse absolue)
  545.         0:-- si on est dans le premier
  546.           if zeNo > 1 then --si ce n'est pas le premier cyber du mois
  547.             case(gL_recres.getPos(zeNo - 1)) of
  548.               0:------------------ si le cyber prΘcΘdent n'est pas une rΘcrΘ
  549.                 go movie "@/calen"&REL2ABS(zeNo - 1)-- on va au cyber prΘcΘdent (exactement α son adresse absolue)
  550.               otherwise:---------- si le  cyber prΘcΘdent est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  551.                 if zeNo - 2 <  1 then-----si le  rang courant ce cyber - 2 est plus petit que 1
  552.                   go movie "@/calen"&REL2ABS(gNb_cybers) -- on va au dernier cyberdu mois (exactement α son adresse absolue)
  553.                 else
  554.                   go movie "@/calen"&REL2ABS(zeNo - 2)-- sinon, on va au cyber de rang courant  - 2 (exactement α son adresse absolue)
  555.                 end if
  556.             end case
  557.           else-- si c'est le premier cyber du mois
  558.             case(gL_recres.getPos(gNb_cybers)) of
  559.               0:-- si le dernier cyber du mois n'est pas une rΘcrΘ
  560.                 go movie "@/calen"&REL2ABS(gNb_cybers) -- on va au dernier cyber du mois (exactement α son adresse absolue)
  561.               otherwise:-- si le dernier cyber du mois est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  562.                 go movie "@/calen"&REL2ABS(gNb_cybers-1)-- on va α l'avant- dernier cyber du mois (exactement α son adresse absolue) 
  563.             end case
  564.           end if
  565.       end case
  566.     0:--si on n'est pas dans un cyberlecteur
  567.       if zeNo > 1 then --si ce n'est pas le premier cyber du mois
  568.         put gL_recres.getPos(zeNo - 1)
  569.         case(gL_recres.getPos(zeNo - 1)) of
  570.           0:------------------ si le cyber prΘcΘdent n'est pas une rΘcrΘ
  571.             go movie "@/calen"&REL2ABS(zeNo - 1)-- on va au cyber prΘcΘdent (exactement α son adresse absolue)
  572.           otherwise:---------- si le  cyber prΘcΘdent est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  573.             if zeNo - 2 <  1 then-----si le  rang courant ce cyber - 2 est plus petit que 1
  574.               go movie "@/calen"&REL2ABS(gNb_cybers) -- on va au dernier cyberdu mois (exactement α son adresse absolue)
  575.             else
  576.               go movie "@/calen"&REL2ABS(zeNo - 2)-- sinon, on va au cyber de rang courant  - 2 (exactement α son adresse absolue)
  577.             end if
  578.         end case
  579.       else-- si c'est le premier cyber du mois
  580.         case(gL_recres.getPos(gNb_cybers)) of
  581.           0:-- si le dernier cyber du mois n'est pas une rΘcrΘ
  582.             go movie "@/calen"&REL2ABS(gNb_cybers) -- on va au dernier cyber du mois (exactement α son adresse absolue)
  583.           otherwise:-- si le dernier cyber du mois est une rΘcrΘ, comme il ne paut y avoir deux rΘcrΘs consΘcutives
  584.             go movie "@/calen"&REL2ABS(gNb_cybers-1)-- on va α l'avant- dernier cyber du mois (exactement α son adresse absolue) 
  585.         end case
  586.       end if
  587.   end case
  588. end
  589. ---------------
  590. on localdata Noligne--extrait la ligne Noligne du champ localdata
  591.   return value(member("localdata").line[Noligne])
  592. end 
  593. -----------------------
  594. on jump_intro ZEGOUDLABEL
  595.   global L_gmemPassage
  596.   if L_gmemPassage = VOID then L_gmemPassage = []
  597.   zemoovy_nem = the movieName.char[1..length(the movieName)-4]
  598.   if L_gmemPassage.getPos(zemoovy_nem) > 0 then
  599.     go ZEGOUDLABEL
  600.     spritesMenus()
  601.     hide_title()
  602.   else 
  603.     L_gmemPassage.add(zemoovy_nem)
  604.   end if
  605. end
  606. ---------------------
  607. on sous_titrage --message envoyΘ par l'Θquerre bleue α sa fermeture aprΦs clic sur item 5("voir/masquer sous-titres")
  608.   global gFlag_soustitrage, gLMem_MagicWindoz_lok
  609.   if gLMem_MagicWindoz_lok = VOID or gLMem_MagicWindoz_lok = [] then RAZ_magicWindoz_lok()
  610.   IF gFlag_soustitrage = VOID then gFlag_soustitrage = 0
  611.   case(gFlag_soustitrage) of
  612.     0:
  613.       gFlag_soustitrage = 1
  614.       if   windowpresent("SOUS_TITRE") = 0 then
  615.         member("SOUS_TITRAGE").text = EMPTY
  616.         window("SOUS_TITRE").rect = gLMem_MagicWindoz_lok[1]
  617.         window("SOUS_TITRE").filename = "@//COMMUNS/MOBICLIC_SOUS_TITRAGE"
  618.         window("SOUS_TITRE").windowType = 2
  619.         window("SOUS_TITRE").modal = 0
  620.         window("SOUS_TITRE").visible = 1
  621.         window("SOUS_TITRE").open()
  622.       end if
  623.     1:
  624.       gFlag_soustitrage = 0
  625.       if windowpresent("SOUS_TITRE") = 1 then
  626.         member("SOUS_TITRAGE").text = EMPTY
  627.         window("SOUS_TITRE").forget()
  628.       end if 
  629.   end case
  630. end 
  631. ----------------------
  632. on gere_soustitrage ID_SON-- procΘdure lancΘe dans les procΘdures "joueson()"
  633.   global gFlag_soustitrage
  634.   if ID_SON contains "sons" then
  635.     L = length(ID_SON)
  636.     ID_SON =ID_SON.char[6..L]
  637.   end if
  638.   temp = trouve_soustitre(ID_SON)
  639.   if temp > 0 then
  640.     member("SOUS_TITRAGE").text = member("LISTE_SOUS_TITRES").LINE[temp]
  641.   end if
  642. end
  643. -----------------------
  644. on trouve_soustitre CHAINE
  645.   global gNb_soustitres_Mobiclic
  646.   if gNb_soustitres_Mobiclic = VOID then gNb_soustitres_Mobiclic = member("LISTE_SONS_POUR_SOUSTITRAGE").line.count
  647.   No_ligne = 0
  648.   repeat with i = 1 to gNb_soustitres_Mobiclic
  649.     if member("LISTE_SONS_POUR_SOUSTITRAGE").line[i] = CHAINE then
  650.       No_ligne = i
  651.       exit repeat 
  652.     end if
  653.   end repeat
  654.   return No_ligne
  655. end
  656. -----------------------
  657. --on exitFrame
  658. --  global gFlag_soustitrage
  659. --  if gFlag_soustitrage = 1 and soundBusy(3) = 0 then member("SOUS_TITRAGE").text = EMPTY
  660. --  pass
  661. --end
  662. -----------------------
  663. on RAZ_magicWindoz_lok
  664.   global gLMem_MagicWindoz_lok, gL_MagicWindoz_lok, gL_magicWindowscolors
  665.   x0 = the stageLeft
  666.   y0 = the stageTop
  667.   x1 = the stageRight
  668.   y1 = the stageBottom
  669.   if gL_magicWindowscolors = VOID then gL_magicWindowscolors = ["YELLOW","GREEN","RED","BLUE"]
  670.   --  if gLMem_MagicWindoz_lok = VOID then
  671.   gLMem_MagicWindoz_lok= [[],[],[],[],[],[]]
  672.   gLMem_MagicWindoz_lok[1] = rect( x0, y0 ,x0 + 430 ,y0 + 68) -- position initiale dela fenΩtre "yellow window"
  673.   gLMem_MagicWindoz_lok[2] = rect(x1-72, y0 ,x1 , y0 +250) -- position initiale dela fenΩtre "green window"
  674.   gLMem_MagicWindoz_lok[3] = rect(x1-312, y1-62 ,x1 , y1) -- position initiale dela fenΩtre "red window"
  675.   gLMem_MagicWindoz_lok[4] = rect(x0 ,y1-280 ,x0 + 74,y1) -- position initiale dela fenΩtre "blue window"
  676.   gLMem_MagicWindoz_lok[5] = rect(x0, y1 ,x0+640 , y1 +80) -- position initiale dela fenΩtre commentaires
  677.   --  end if 
  678.   case(the paramCount) of
  679.     0:
  680.       gL_MagicWindoz_lok = gLMem_MagicWindoz_lok.duplicate()
  681.     1:
  682.       gL_MagicWindoz_lok[param(1)] = gLMem_MagicWindoz_lok[param(1)]
  683.   end case
  684. end
  685. -----------------------
  686. on manage_magicWindow COLOR, MODE
  687.   global gL_cornerwindows_Flags,gL_MagicWindoz_lok, gL_magicWindowscolors
  688.   if gL_MagicWindoz_lok = VOID then RAZ_magicWindoz_lok()
  689.   if gL_cornerwindows_Flags = VOID then gL_cornerwindows_Flags = [0,0,0,0] --coin HG(jaune), coin HD(vert), coin BD(rouge), coin BG(bleu)
  690.   temp = magicW_No(COLOR)
  691.   case(gL_cornerwindows_Flags[temp]) of
  692.     0:--si la fenΩtre-Θquerre n'est pas dΘployΘe
  693.       gL_cornerwindows_Flags[temp]= 1
  694.       if   windowpresent(COLOR&"_WINDOW") = 0 then -- si la fenΩtre n'a pas dΘja ΘtΘ ouverte au moins 1 fois
  695.         window(COLOR&"_WINDOW").rect = gL_MagicWindoz_lok[temp]
  696.         window(COLOR&"_WINDOW").filename = "@//COMMUNS/M_"&COLOR&"_WINDOW"
  697.         window(COLOR&"_WINDOW").windowType = member(COLOR&"_WINDOW_MASK")--ceci n'opΦre qu'en mode runtime
  698.         window(COLOR&"_WINDOW").modal = 0
  699.         window(COLOR&"_WINDOW").visible = 1
  700.       else
  701.         window(COLOR&"_WINDOW").rect = gL_MagicWindoz_lok[temp]
  702.       end if
  703.       window(COLOR&"_WINDOW").open()
  704.     1:--si la fenΩtre-Θquerre  est dΘployΘe
  705.       gL_cornerwindows_Flags[temp] = 0
  706.       if windowpresent(COLOR&"_WINDOW") = 1 then
  707.         close_magicWindow(COLOR,MODE)
  708.       end if 
  709.   end case
  710. end
  711. ----------------------
  712. on magicW_No ZECOLOR
  713.   global gL_magicWindowscolors
  714.   return gL_magicWindowscolors.getPos(ZECOLOR)
  715. end 
  716. ------------------
  717. on close_magicWindow COLOR,MODE
  718.   global gL_cornerwindows_Flags, gL_MagicWindoz_lok, gLmem_MagicWindoz_lok
  719.   temp = magicW_No(COLOR)
  720.   gL_cornerwindows_Flags[temp] = 0
  721.   test = (MODE = "SPE" and intersect(gL_MagicWindoz_lok[temp], gLmem_MagicWindoz_lok[temp]) <> rect(0,0,0,0) or MODE = "STD")
  722.   if  test = 1 then 
  723.     RAZ_magicWindoz_lok(temp)
  724.   end if
  725.   window(COLOR&"_WINDOW").close()
  726. end
  727. ----------------------
  728. on RAZ_MAGIC_WINDOW COLOR
  729.   temp = COLOR&"_WINDOW"
  730.   if windowPresent(temp) then 
  731.     tell window temp
  732.       go to frame "RAZ_params"
  733.     end tell
  734.   end if
  735. end
  736. --------------
  737. on imprimer_laBd  WATMODE, WATTYPE,TITRE, PIED_DE_PAGE, VERSION,COLORMODE
  738.   global gL_printdispo
  739.   -- WATMODE indique si on est en mode aperτu (1) ou en mode impression (0)
  740.   -- WATMEDIA indique le type de fichier α imprimer : acteur (nom d'acteur) ou Θcran ("E")
  741.   -- crΘation d'une instance de l'xtra d'impression----------------------------------------------------------
  742.   doc = new(xtra "PrintOMatic")
  743.   if not objectP(doc) then exit
  744.   -- rΘglages des marges
  745.   setPrintableMargins (doc)
  746.   setMargins doc, rect(42,42,42,42)
  747.   -- crΘation de la page
  748.   if (doPageSetup(doc)) then
  749.     newPage doc
  750.     -- initialisation des variables de format page
  751.     L_Page=getPageWidth(doc)
  752.     H_Page=getPageHeight(doc)
  753.     --initialisation de la police
  754.     setTextFont doc,"Arial"
  755.     
  756.     case(WATTYPE) of
  757.       "E": --impression d'Θcran
  758.         
  759.       "M":--impression d'acteur
  760.         ---------------- TETE DE LA PAGE -------------------
  761.         --        -- ligne horizontale haut de page
  762.         --                drawLine doc,point(0,10),point(L_Page,10)
  763.         --        -- titre
  764.         setTextJust doc,"center"
  765.         setTextStyle doc,"bold"
  766.         setTextSize doc,14
  767.         drawText doc,TITRE ,point(L_Page/2, 0)
  768.         ---------------- CORPS DE LA PAGE -------------------
  769.         case(VERSION) of
  770.           "enfant":
  771.             x0 = -20
  772.             y0 = 10
  773.             caleGauche = x0
  774.             caleHaut = y0
  775.             repeat with i = 1 to count(gL_printdispo)
  776.               repeat with j = 1 to count(gL_printdispo[i])
  777.                 W = member("TYPECASE_"&gimme2digits(gL_printdispo[i][j])).width
  778.                 H = member("TYPECASE_"&gimme2digits(gL_printdispo[i][j])).height
  779.                 drawPicture doc,member("MINIATURE_"&gimme2digits(calculNolineaire(gL_printdispo,i,j))),rect(calegauche,caleHaut,calegauche + W,caleHaut + H)
  780.                 calegauche =  calegauche + W + 7
  781.               end repeat
  782.               caleGauche = x0
  783.               caleHaut = caleHaut + H + 16
  784.             end repeat
  785.           otherwise:
  786.             ------rΘglage couleur
  787.             case(COLORMODE) of
  788.               "NOIR":
  789.                 NOM = VERSION&"_N"
  790.               "COULEUR":
  791.                 NOM = VERSION&"_C"
  792.             end case
  793.             -- placement du schΘma (taille propre, ramenΘe autoritairement α largeur max = L_Page
  794.             -- ou α la hauteur de page disponible(H_Page) si l'une des deux dimensions est trop grande
  795.             L = float(member(NOM).width)
  796.             H = float(member(NOM).height)
  797.             coef  = H/L
  798.             case(L>=H) of
  799.               1:
  800.                 L_schema = min(L, L_Page)
  801.                 H_schema = (L_schema)*coef
  802.               0:
  803.                 H_schema = min(H,H_Page-50)
  804.                 L_schema = H_schema/coef
  805.             end case
  806.             x0 = 0
  807.             y0 = 10
  808.             drawPicture doc,member(NOM),rect(x0,y0,x0 +  L_schema,y0 + H_schema)
  809.         end case
  810.     end case
  811.     ----------------- PIED DE PAGE -------------------
  812.     -- ligne horizontale bas de page
  813.     --        drawLine doc,point(0,H_Page-30),point(L_Page,H_Page-30)
  814.     setTextJust doc,"left"
  815.     setTextStyle doc,"plain"
  816.     setTextSize doc,16
  817.     --    drawText doc,PIED_DE_PAGE,point(L_Page- 300,H_Page-5)
  818.     -- logo  GF
  819.     --    drawPicture doc,member("LOGO_MILAN"),rect(L_Page- 40,H_Page-41,L_Page ,H_Page-1)
  820.     setTextSize doc,8
  821.   end if
  822.   
  823.   -- lancement de l'impression-----------------------------------------------------------
  824.   case(WATMODE) of
  825.     1:-- si on est en mode aperτu on affiche l'aperτu
  826.       printPreview doc
  827.     0:-- sinon on imprime
  828.       setProgressMsg doc, "Impression de la fiche "&TITRE&" en cours... "
  829.       if doJobSetup(doc) then
  830.         print doc
  831.       end if
  832.   end case
  833. end
  834.  
  835. -------------------------
  836. on calculNolineaire ZELISTE,MoSOUSLISTE, NoELEMENTSOUSLISTE
  837.   --dans une liste de listes renvoie le n░ linΘaire d'un ΘlΘment d'une dzes sous-listes
  838.   temp = 0
  839.   repeat with i = 1 to MoSOUSLISTE-1
  840.     temp = temp + count(ZELISTE[i])
  841.   end repeat
  842.   return temp + NoELEMENTSOUSLISTE
  843. end 
  844.  
  845.  
  846.